/* treatment record */
import java.sql.Date;
import java.sql.Time;

/**
 * This class creates the treatment records. Records who was the treating doc,
 * attending nurse, date, time, DOs, symptoms, diagnosis, heart rate, pulse,
 * temperature, weight, and height.
 * 
 * @author evelyn942
 * @version 1.0 3-10-11
 */

public class TreatmentRecord {

	/**
	 * the date that the appointment took place.
	 */
	private Date date;

	/**
	 * the time that the appointment started.
	 */
	private Time time;

	/**
	 * the doctors orders.
	 */
	private final DoctorsOrders doctorsOrders;

	/**
	 * treatingDoctor - the doctor at the appointment.<BR>
	 * attendingNurse - the nurse at the appointment.<BR>
	 * symptoms - the symptoms the patient is exibiting.<BR>
	 * diagnosis - the diagnosis of the patient.
	 */
	private String treatingDoctor, attendingNurse, symptoms, diagnosis;

	/**
	 * bpSystolic/bpDiastolic - the blood pressure of the patient.<BR>
	 * pulse - the pulse of the patient.
	 */
	private int bpSystolic, bpDiastolic, pulse;

	/**
	 * temp - the temperature of the patient.<BR>
	 * weight - the weight of the patient.
	 */
	private double temp, weight;

	/**
	 * the height of the patient.
	 */
	private Height height;

	/**
	 * This method instantiates a doctorsOrders. Part of the treatment record is
	 * the list of doctors orders which includes follow up instructions and
	 * other instructions.
	 */
	public TreatmentRecord() {
		doctorsOrders = new DoctorsOrders();
	}

	/**
	 * This method takes in one parameter and returns the doctors orders for
	 * this class.
	 * 
	 * @param doctorsOrders
	 *            Takes in a variable of type DoctorsOrders for this class to
	 *            access.
	 * @return Returns the doctorsOrders taken in for access by this class.
	 */
	public DoctorsOrders getDoctorsOrders(DoctorsOrders doctorsOrders) {
		return doctorsOrders;
	}

	/**
	 * gets the Doctors orders
	 * @return the doctors orders.
	 */
	public DoctorsOrders getDoctorsOrders() {
		return doctorsOrders;
	}

	/**
	 * This toString method returns a string of all the information in this
	 * class to be accessed by users/database.
	 * 
	 * @return Returns a long string of all the information currently in the
	 *         class to be accessed by database/users.
	 */
	public String toString() {
		return "TREATMENT RECORD/n Date" + this.getDate() + "/n Time"
				+ this.getTime() + "/n Treating Doctor"
				+ this.getTreatingDoctor() + "/n Attending Nurse"
				+ this.getAttendingNurse() + "/n Symptoms" + this.getSymptoms()
				+ "/n Diagnosis" + this.getDiagnosis() + "/n BP Systolic"
				+ this.getBpSystolic() + "/n BP Diastolic"
				+ this.getBpDiastolic() + "/n Pulse" + this.getPulse()
				+ "/n Temperature" + this.getTemperature() + "/n Weight"
				+ this.getWeight() + "/n Height" + this.getHeight();
	}

	/**
	 * This getter gets the TreatingDoctor and returns it in a string form for
	 * access by database/user/other classes.
	 * 
	 * @return TreatingDoctor returns the treating doctor for the patient
	 */
	public String getTreatingDoctor() {
		return treatingDoctor;
	}

	/**
	 * This method sets the Treating Doctor for the class in the form of the
	 * string.
	 * 
	 * @param doc
	 *            Sets the TreatingDoctor by taking in a string
	 */
	public void setTreatingDoctor(String doc) {
		this.treatingDoctor = doc;
	}

	/**
	 * This getter gets the attendingNurse and returns it in a string form for
	 * access by database/user/other classes.
	 * 
	 * @return attendingNurse Retursn the attending nurse of the patient
	 */
	public String getAttendingNurse() {
		return attendingNurse;
	}

	/**
	 * This method sets the Attending Nurse for the class in the form of the
	 * string.
	 * 
	 * @param nurse
	 *            Sets the attendingNurse by taking in a string
	 */
	public void setAttendingNurse(String nurse) {
		this.attendingNurse = nurse;
	}

	/**
	 * This getter gets the date of the appointment and returns it in a date
	 * form for access by database/user/other classes.
	 * 
	 * @return date of appointment in the form of a Date
	 */
	public Date getDate() {
		return date;
	}

	/**
	 * This method sets the date for the class by taking in the date of type
	 * Date.
	 * 
	 * @param date
	 *            Sets the date by taking in a variable of type Date
	 */
	public void setDate(Date date) {
		this.date = date;
	}

	/**
	 * This getter gets the time of the appointment and returns it in a Time
	 * form for access by database/user/other classes.
	 * 
	 * @return time Returns time of appointment in Time form for use by other
	 *         classes
	 */
	public Time getTime() {
		return time;
	}

	/**
	 * This method sets the time for the class in a variable of type Time
	 * 
	 * @param t
	 *            Sets the time by taking in a variable of type Time
	 */
	public void setTime(Time t) {
		this.time = t;
	}

	/**
	 * This getter gets the symptoms of patient and returns it in a string form
	 * for access by database/user/other classes.
	 * 
	 * @return symptoms of patient. returns in a string form for access by other
	 *         classes
	 */
	public String getSymptoms() {
		return symptoms;
	}

	/**
	 * This method sets the symptoms for the class in a string
	 * 
	 * @param sypmtoms
	 *            Sets the symptoms by taking in a string
	 */
	public void setSymptoms(String sypmtoms) {
		this.symptoms = sypmtoms;
	}

	/**
	 * This getter gets the diagnosis and returns it in a string form for access
	 * by database/user/other classes.
	 * 
	 * @return diagnosis of patient in string form for access by all other
	 *         classes
	 */
	public String getDiagnosis() {
		return diagnosis;
	}

	/**
	 * This method sets the diagnosis for the class by taking in a string
	 * 
	 * @param diagnosis
	 *            Sets the diagnosis by taking in a string
	 */
	public void setDiagnosis(String diagnosis) {
		this.diagnosis = diagnosis;
	}

	/**
	 * This getter gets the Diastolic Blood Pressure and returns it in an int
	 * form for access by database/user/other classes.
	 * 
	 * @return bpDiastolic in the form of an int for access by all other classes
	 */
	public int getBpDiastolic() {
		return bpDiastolic;
	}

	/**
	 * This method sets the diastolic blood pressure for the class by taking in
	 * an int
	 * 
	 * @param bpd
	 *            Sets the bpDaistolic by taking in an int
	 */
	public void setBpDiastolic(int bpd) {
		this.bpDiastolic = bpd;
	}

	/**
	 * This getter gets the Systolic Blood Pressure and returns it in an int
	 * form for access by database/user/other classes.
	 * 
	 * @return bpSystolic in form of an int for access by all other classes
	 */
	public int getBpSystolic() {
		return bpSystolic;
	}

	/**
	 * This method sets the systolic blood pressure for the class by taking in
	 * an int
	 * 
	 * @param bps
	 *            Sets the bpSystolic by taking in an int
	 */
	public void setBpSystolic(int bps) {
		this.bpSystolic = bps;
	}

	/**
	 * This getter gets the pulse and returns it in an int form for access by
	 * database/user/other classes.
	 * 
	 * @return pulse in int form for access by all other classes
	 */
	public int getPulse() {
		return pulse;
	}

	/**
	 * This method sets the pulse for the class by taking in an int
	 * 
	 * @param pulse
	 *            Sets the pulse by taking in an int
	 */
	public void setPulse(int pulse) {
		this.pulse = pulse;
	}

	/**
	 * This getter gets the temperature and returns it in an int form for access
	 * by database/user/other classes.
	 * 
	 * @return temp in int form for access by all other classes
	 */
	public double getTemperature() {
		return temp;
	}

	/**
	 * This method sets the temperature for the class by taking in an int
	 * 
	 * @param temp
	 *            Sets the temp by taking in a string
	 */
	public void setTemperature(double temp) {
		this.temp = temp;
	}

	/**
	 * This getter gets the weight and returns it in a double type for access by
	 * database/user/other classes.
	 * 
	 * @return weight Returns in a double form for access by all other classes
	 */
	public double getWeight() {
		return weight;
	}

	/**
	 * This method sets the weight for the class by taking in a double
	 * 
	 * @param weight
	 *            Sets the diagnosis by taking in a string
	 */
	public void setWeight(double weight) {
		this.weight = weight;
	}

	/**
	 * This getter gets the height from this class and returns it in a Height
	 * type for access by database/user/other classes.
	 * 
	 * @return height Returns the height in Height form for access by all other
	 *         classes
	 */
	public Height getHeight() {
		return this.height;
	}

	/**
	 * This method sets the height for the class by taking in a variable of type
	 * Height
	 * 
	 * @param height
	 *            Sets the height by taking in a variable of type Height
	 */
	public void setHeight(Height height) {
		this.height = height;
	}

	/**
	 * This getter gets the prescription by accessing the DoctorsOrders's
	 * getPrescription method. Returns for use by all other classes.
	 * 
	 * @return Returns the prescription accessed by DoctorsOrders
	 *         getPrescription and returns as a string for use by all other
	 *         classes
	 */
	public String getPrescription() {
		return doctorsOrders.getPrescription();
	}

	/**
	 * This method sets the prescription for the class by taking in a string
	 * 
	 * @param prescription
	 *            Sets the prescription by taking in a string
	 */
	public void setPrescription(String prescription) {
		doctorsOrders.setPrescription(prescription);
	}

	/**
	 * This getter gets the lab work by accessing the DoctorsOrders's getLabWork
	 * method. Returns for use by all other classes.
	 * 
	 * @return Returns the labWork accessed by DoctorsOrders getLabWork and
	 *         returns as a string for use by all other classes
	 */
	public String getLabWork() {
		return doctorsOrders.getLabWork();
	}

	/**
	 * This method sets the lab work for the class by taking in a string
	 * 
	 * @param labWork
	 *            Sets the labWork by taking in a string
	 */
	public void setLabWork(String labWork) {
		doctorsOrders.setLabWork(labWork);
	}

	/**
	 * This getter gets the FollowUpInstructions by accessing the
	 * DoctorsOrders's getFollowUpInstructions method. Returns for use by all
	 * other classes.
	 * 
	 * @return Returns the followUpInstructions accessed by DoctorsOrders
	 *         getFollowUpInstructions and returns as a string for use by all
	 *         other classes
	 */
	public String getFollowUpInstructions() {
		return doctorsOrders.getfollowUpInstructions();
	}

	/**
	 * This method sets the followUpInstructions by accessing the doctorsOrders
	 * setFollowUpInstructions
	 * 
	 * @param instructions
	 *            Takes in a String parameter and sets the instructions by the
	 *            doctorsOrders setFollowUpInstructions
	 */
	public void setFollowUpInstructions(String instructions) {
		doctorsOrders.setFollowUpInstructions(instructions);
	}

	/**
	 * This getter gets the otherInstrucitons by accessing the DoctorsOrderss
	 * getOtherInstructions method. Returns for use by all other classes.
	 * 
	 * @return Returns the prescription accessed by DoctorsOrders
	 *         getOtherInstructions and returns as a string for use by all other
	 *         classes
	 */
	public String getOtherInstructions() {
		return doctorsOrders.getOtherInstructions();
	}

	/**
	 * This method sets the otherInstructions via the DoctorsOrders
	 * setOtherInstructions method
	 * 
	 * @param otherInstructions
	 *            Takes in a string to set the otherInstructions via the
	 *            DoctorsOrders setOtherInstuctions method
	 */
	public void setOtherInstructions(String otherInstructions) {
		doctorsOrders.setOtherInstructions(otherInstructions);
	}

}